package com.primary.string;

/**
 * @author: yyh
 * @description:整数反转：https://leetcode.cn/leetbook/read/top-interview-questions-easy/xnx13t/
 * @date: 2022/7/14 16:53
 */
public class Reverse {
    /**
     * 给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
     *
     * 如果反转后整数超过 32 位的有符号整数的范围[−2^31, 2^31− 1] ，就返回 0。
     *
     * 假设环境不允许存储 64 位整数（有符号或无符号）。
     *
     */

    /**
     * 示例 1：
     * <p>
     * 输入：x = 123
     * 输出：321
     * 示例 2：
     * <p>
     * 输入：x = -123
     * 输出：-321
     * 示例 3：
     * <p>
     * 输入：x = 120
     * 输出：21
     * 示例 4：
     * <p>
     * 输入：x = 0
     * 输出：0
     */

    public static int reverse(int x) {
        boolean negative = false;
        if (x < 0) {
            negative = true;
        }
        String s = x + "";
        StringBuilder sb = null;
        int endIndex = 0;
        if (negative) {
            sb = new StringBuilder("-");
            endIndex = 1;
        } else {
            sb = new StringBuilder();
        }
        for (int i = s.length() - 1; i >= endIndex; i--) {
            sb.append(s.charAt(i));
        }
        try {
            return Integer.parseInt(sb.toString());
        } catch (NumberFormatException e) {
            return 0;
        }
    }

    public static int reverse_1(int x) {
        long res = 0;
        while (x != 0) {
            res = res * 10 + x % 10;
            x = x / 10;
        }
        return res == (int) res ? (int) res : 0;
    }

    public static void main(String[] args) {
//        System.out.println(reverse_1(100));
//        System.out.println(reverse_1(-100));
//        System.out.println(reverse_1(-123));
        System.out.println(reverse_1(-1534236469));

    }
}
